import { defineConfig, loadEnv, ConfigEnv, UserConfig } from "vite";
import { resolve } from 'path'
import { createVitePlugins } from "./build/plugins";
import { wrapperEnv } from "./src/utils/getEnv";

export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
  const env = loadEnv(mode, process.cwd());
  const viteEnv = wrapperEnv(env);
  return {
    // 基本路径
    base: '/',
    plugins: createVitePlugins(viteEnv),
    resolve: {
      // src 别名配置
      alias: {
        "@": resolve(__dirname, 'src'),
      },
      // 使用路径别名时想要省略的后缀名，可以自己增减
      extensions: ['.js', '.json', '.ts']
    },
    css: {
      preprocessorOptions: {
        less: {
          additionalData: `@import "@/style/var.less";`,
          javascriptEnabled: true
        }
      }
    },
    server: {
      // // 端口号
      port: viteEnv.VITE_PORT,
      // 监听所有地址
      host: '0.0.0.0',
      // 服务启动时是否自动打开浏览器
      open: viteEnv.VITE_OPEN,
      // 允许跨域
      cors: true,
      // 自定义代理规则
      proxy: {
        '/api': {
          target: 'http://localhost:3000',
          changeOrigin: true,
          rewrite: (path: string) => path.replace(/^\/api/, '')
        }
      },
    },
    build: {
      // 设置最终构建的浏览器兼容目标
      target: 'es2015',
      // 构建后是否生成 source map 文件
      sourcemap: false,
      //  chunk 大小警告的限制（以 kbs 为单位）
      chunkSizeWarningLimit: 2000,
      // 启用/禁用 gzip 压缩大小报告
      reportCompressedSize: false,
    },
  }
})
